Computer systems typically include mass storage devices configured as a "file system." Mass storage devices include hard drives, optical disk drives, magnetic tape drives, solid state disk drives and bubble memories. Software routines for maintaining such a file system are known in the art as "check and repair" utilities. For example, in the UNIX Operating System, a utility called "fsck" is used to verify control information and the directories of the file system after an unscheduled event such as a power outage. The "fsck" command bypasses standard file access methods and compares directory and control information in an effort to identify any disk blocks or control structures (known as inodes) that are not accounted for within the file system. Errors in the state of the file system are then addressed in an attempt to return the system to a known correct state. A similar routine, called "chkdsk" is used in DOS-based systems.
When a check and repair operation is carried out, normal file system access cannot take place. As a result, prior art check and repair utilities are quite cumbersome on systems having a large amount of mounted disk storage and/or that are required in "mission critical" operating environments. The "fsck" utility uses a small amount of processor memory for a workspace, but it runs very slowly because it makes multiple passes, even on a correct file. It is thus much too slow for use with very large file systems or for time-sensitive computer environments that must be up and running 24 hours a day, seven days a week. The "chkdsk" utility runs more quickly, but it uses too much memory in proportion to file system size to be useful for such large systems or in mission critical environments.
Thus, file system check and repair techniques currently available in the marketplace always impose compromises in that they are either too slow or require too much memory. As a result, it has not been possible to scale these routines and provide efficient check and repair functionality over a wide range of processor, memory and file system operating requirements, or to provide adequate "mission critical" response rates.
There is therefore a long felt need in the marketplace for a file system check and repair utility that solves these and other problems of the prior art.